# -*- coding:utf-8 -*-

import pygame
from game import main
from sys import exit
import os
from pygame.locals import *

pygame.init()

class menu:
    def __init__(self):
        self.imagem = pygame.image.load("Imagens" + os.sep + "imagem_menu_def.jpg")
        self.posicao = (0,0)
        self.tamanho = self.imagem.get_size()

    def tocarmusica(self,musica):
        pygame.mixer.music.load(musica)
        pygame.mixer.music.play(-1)

    def iniciar(self,listaBotoes):
        self.lista_botoes = listaBotoes
        screen = pygame.display.set_mode((600,600),0,32)
        menu.tocarmusica("Musicas" +os.sep+ "Musica_menu.mp3")

        while True:
            for e in pygame.event.get():   # para fechar a janela do programa
                if e.type == QUIT:
                    pygame.mixer.music.stop()
                    exit()
                elif e.type == KEYDOWN:
                    pygame.mixer.music.stop()
                    if e.key ==  K_F4:
                        exit()

            for botao in self.lista_botoes:
                if botao.posicao[0] < pygame.mouse.get_pos()[0] < botao.posicao[0] + botao.tamanho[0] and botao.posicao[1] < pygame.mouse.get_pos()[1] < botao.posicao[1] + botao.tamanho[1]:
                    botao.trocaImagem(1)
                    if pygame.mouse.get_pressed()[0]:
                        botao.trocaImagem(2)
                        botao.ir_Para_botao_select()
                else:
                    botao.trocaImagem(0)
                    screen.blit(self.imagem,self.posicao)
                for botao in self.lista_botoes:
                    screen.blit(botao.imgAtual,botao.posicao)

                pygame.display.update()
   
class botao:
    def __init__(self, img1, img2, img3, posicao, orientacao): # vai ter um parametro de orientacao
        self.imagens = [img1,img2,img3]
        self.imgAtual = pygame.image.load("Imagens" + os.sep + img1)
        self.posicao = posicao
        self.tamanho = self.imgAtual.get_size()
        self.orientacao = orientacao

    def trocaImagem(self, posicao):
        self.imgAtual = pygame.image.load("Imagens" + os.sep + self.imagens[posicao])

    def ir_Para_botao_select(self):
        if self.orientacao[0] == 1:
            #opcoes()
            mopcoes.iniciar()
        elif self.orientacao[1] == 1:
            #instrucoes()
            minstrucoes.iniciar()
        elif self.orientacao[2] == 1:
            #novojogo() buscar lá em Game.py
            chamarImagemJogo.blitar_imagem_jogo()
        elif self.orientacao[3] == 1:
            #creditos()
            mcreditos.iniciar()
        elif self.orientacao[4] == 1:
            pygame.mixer.music.stop()
            exit()


class menu_instrucoes:
    def __init__(self):
        self.imagem = pygame.image.load('Imagens' + os.sep + "imagem_instrucoes.jpg")
        self.posicao = (0,0)
        self.tamanho = self.imagem.get_size()

    def iniciar(self):
        screen = pygame.display.set_mode((600,600),0,32)
        bvoltar = botao("voltar1.png", "voltar2.png", "voltar3.png",(420, 516),[0,0,0,0,0])

        while True:
            for e in pygame.event.get():   # para fechar a janela do programa
                if e.type == QUIT:
                    pygame.mixer.music.stop()
                    exit()

                elif e.type == KEYDOWN:
                    pygame.mixer.music.stop()
                    if e.key ==  K_F4:
                        exit()

            if bvoltar.posicao[0] < pygame.mouse.get_pos()[0] < bvoltar.posicao[0] + bvoltar.tamanho[0] and bvoltar.posicao[1] < pygame.mouse.get_pos()[1] < bvoltar.posicao[1] + bvoltar.tamanho[1]:
                bvoltar.trocaImagem(1)
                if pygame.mouse.get_pressed()[0]:
                    break
            else:
                bvoltar.trocaImagem(0)

            screen.blit(self.imagem,self.posicao)
            screen.blit(bvoltar.imgAtual, bvoltar.posicao)

            pygame.display.update()

class menu_opcoes:
    def __init__(self):
        self.imagem = pygame.image.load('Imagens' + os.sep + "imagem_opcoes.jpg")
        self.posicao = (0,0)
        self.tamanho = self.imagem.get_size()

    def iniciar(self):
        screen = pygame.display.set_mode((600,600),0,32)
        self.lista_botoes = [bmusica, bmusica11, bmusica22]

        while True:
            screen.blit(self.imagem,self.posicao)
            for e in pygame.event.get():   # para fechar a janela do programa
                if e.type == QUIT:
                    pygame.mixer.music.stop()
                    exit()

                elif e.type == KEYDOWN:
                    pygame.mixer.music.stop()
                    if e.key ==  K_F4:
                        exit()

            if bmusica1.posicao[0] < pygame.mouse.get_pos()[0] < bmusica1.posicao[0] + bmusica1.tamanho[0] and bmusica1.posicao[1] < pygame.mouse.get_pos()[1] < bmusica1.posicao[1] + bmusica1.tamanho[1]:
                 bmusica1.trocaImagem(1)
                 if pygame.mouse.get_pressed()[0]:
                     bmusica1.trocaImagem(2)
                     bmusica2.trocaImagem(1)
                     menu.tocarmusica("Musicas"+os.sep+"Musica_jogo1.mp3")

            if bmusica2.posicao[0] < pygame.mouse.get_pos()[0] < bmusica2.posicao[0] + bmusica2.tamanho[0] and bmusica2.posicao[1] < pygame.mouse.get_pos()[1] < bmusica2.posicao[1] + bmusica2.tamanho[1]:
                 bmusica2.trocaImagem(1)
                 if pygame.mouse.get_pressed()[0]:
                     bmusica2.trocaImagem(2)
                     bmusica1.trocaImagem(1)
                     menu.tocarmusica("Musicas"+os.sep+"Musica_jogo2.mp3")
                    
            if bvoltar.posicao[0] < pygame.mouse.get_pos()[0] < bvoltar.posicao[0] + bvoltar.tamanho[0] and bvoltar.posicao[1] < pygame.mouse.get_pos()[1] < bvoltar.posicao[1] + bvoltar.tamanho[1]:
                bvoltar.trocaImagem(1)
                if pygame.mouse.get_pressed()[0]:
                    bvoltar.trocaImagem(2)
                    break

            for botao in self.lista_botoes:
                if botao.posicao[0] < pygame.mouse.get_pos()[0] < botao.posicao[0] + botao.tamanho[0] and botao.posicao[1] < pygame.mouse.get_pos()[1] < botao.posicao[1] + botao.tamanho[1]:
                    botao.trocaImagem(1)
                    if pygame.mouse.get_pressed()[0]:
                        botao.trocaImagem(2)   
                else:
                    botao.trocaImagem(0)
  
            for botao in self.lista_botoes:
                screen.blit(botao.imgAtual,botao.posicao)
 
            screen.blit(bmusica1.imgAtual,bmusica1.posicao)
            screen.blit(bmusica2.imgAtual,bmusica2.posicao)
            screen.blit(bvoltar.imgAtual,bvoltar.posicao)

            pygame.display.update()
            

class menu_creditos:

    def __init__(self):

        self.imagem = pygame.image.load('Imagens' + os.sep + "imagem_creditos.jpg")
        self.posicao = (0,0)
        self.tamanho = self.imagem.get_size()

    def iniciar(self):

        screen = pygame.display.set_mode((600,600),0,32)

        bvoltar = botao("voltar1.png", "voltar2.png", "voltar3.png",(420, 516),[0,0,0,0,0])

        while True:

            for e in pygame.event.get():   # para fechar a janela do programa

                if e.type == QUIT:

                    pygame.mixer.music.stop()

                    exit()

                elif e.type == KEYDOWN:

                    pygame.mixer.music.stop()

                    if e.key ==  K_F4:

                        exit()

            if bvoltar.posicao[0] < pygame.mouse.get_pos()[0] < bvoltar.posicao[0] + bvoltar.tamanho[0] and bvoltar.posicao[1] < pygame.mouse.get_pos()[1] < bvoltar.posicao[1] + bvoltar.tamanho[1]:

                bvoltar.trocaImagem(1)

                if pygame.mouse.get_pressed()[0]:

                    break

            else:

                bvoltar.trocaImagem(0)

            screen.blit(self.imagem,self.posicao)
            screen.blit(bvoltar.imgAtual, bvoltar.posicao)

            pygame.display.update()


class historia_jogo:

    def __init__(self):

        self.imagem = pygame.image.load('Imagens' + os.sep + "imagem_teste_jogo.jpg")
        self.posicao = (0,0)
        self.tamanho = self.imagem.get_size()

    def blitar_imagem_jogo(self):
        screen = pygame.display.set_mode((600,600),0,32)

        screen.blit(self.imagem, self.posicao)

        while True:

            for e in pygame.event.get():   # para fechar a janela do programa

                if e.type == QUIT:

                    pygame.mixer.music.stop()

                    exit()

                if e.type ==  KEYDOWN:

                    main()

            pygame.display.update()

    

menu = menu()
bopcoes = botao("opcoes1.png","opcoes2.png","opcoes3.png",(250,300),[1,0,0,0,0])
binstrucoes = botao("instrucao1.png","instrucao2.png","instrucao3.png",(150,200),[0,1,0,0,0])
bnovo = botao("novo_jogo1.png","novo_jogo2.png","novo_jogo3.png",(350, 150),[0,0,1,0,0])
bsair = botao("sair1.png", "sair2.png", "sair3.png", (150, 400), [0,0,0,0,1])
bcreditos = botao("credito1.png", "credito2.png", "credito3.png" , (250, 500), [0,0,0,1,0])
bvoltar = botao("voltar1.png", "voltar2.png", "voltar3.png",(420, 516),[0,0,0,0,0])
bmusica = botao("musica1.png", "musica1.png", "musica1.png", (100,200), [0,0,0,0,0])
bmusica1 = botao("musica11.png", "musica12.png", "musica_ok1.png", (550, 320), [0,0,0,0,0]) 
bmusica2 = botao("musica21.png", "musica22.png", "musica_ok1.png",(550, 420), [0,0,0,0,0])  
bmusica11 = botao("imagens_musicas1.png","imagens_musicas1.png", "imagens_musicas1.png", (350, 250), [0,0,0,0,0]) 
bmusica22 = botao("imagens_musicas2.png", "imagens_musicas2.png", "imagens_musicas2.png", (350,350), [0,0,0,0,0]) 

chamarImagemJogo = historia_jogo()

minstrucoes = menu_instrucoes()
mopcoes = menu_opcoes()
mcreditos = menu_creditos()

menu.iniciar([bopcoes,binstrucoes,bnovo, bsair, bcreditos])

menu_opcoes.iniciar(lista_botoes)


